x11: Try harder to find the right monitor
authorMatthias Clasen <mclasen@redhat.com>
Tue, 27 Apr 2021 03:18:50 +0000 (23:18 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 27 Apr 2021 03:20:10 +0000 (23:20 -0400)
If we deal with a panel, we end up with no monitor,
and crash, which isn't great and isn't necessary.

Fixes: #3900
gdk/x11/gdksurface-x11.c

index aeaca9c0f99f3e53b14af2d0c846bcb866f180dd..f8a69b858eb2f87c844dc3744882693ba856636c 100644 (file)
@@ -1822,9 +1822,16 @@ gdk_x11_surface_layout_popup (GdkSurface     *surface,
 
   monitor = gdk_surface_get_layout_monitor (surface, layout,
                                             gdk_x11_monitor_get_workarea);
-  gdk_x11_monitor_get_workarea (monitor, &bounds);
+  if (monitor)
+    gdk_x11_monitor_get_workarea (monitor, &bounds);
+  else
+    {
+      monitor = gdk_surface_get_layout_monitor (surface, layout,
+                                                gdk_monitor_get_geometry);
+      gdk_monitor_get_geometry (monitor, &bounds);
+    }
 
-  gdk_popup_layout_get_shadow_width (layout,
+  gdk_popup_layout_get_shadow_width (layout, 
                                      &impl->shadow_left,
                                      &impl->shadow_right,
                                      &impl->shadow_top,